﻿namespace PropOnline.Security
{
    using System;
    using System.Linq;
    using PropOnline.Stores.Data;

    public class Autenticacion
    {
        public const string IdUsuarioCookieName = "usuario";

        public static string CrearIdUsuario()
        {
            int idUsuario;
            do
            {
                idUsuario = GetRandom();
            }
            while (Database.Query("Select * From usuario Where usuario.Id = ?idUsuario").WithParameter("?idUsuario", idUsuario).Results(u => new { Id = u.Id }).SingleOrDefault() != null);

            //Sacar el Inmobiliaria = "None"
            Database
                .Query("Insert into usuario (Id, Codigo, Inmobiliaria) Values (?id, ?codigo, ?inmobiliaria)")
                .WithParameter("?id", idUsuario)
                .WithParameter("?codigo", GetRandom())
                .WithParameter("?inmobiliaria", "None")
                .Execute();

            return idUsuario.ToString();
        }

        public static bool ValidarCodigo(int idUsuario, int codigo)
        {
            //Sacar este return
            return codigo == 123456;

            //return container.usuario.SingleOrDefault(u => u.Id == idUsuario && u.Codigo == codigo) != null;
            return Database
                    .Query("Select * From usuario Where usuario.Id = ?idUsuario and usuario.Codigo = ?codigo")
                    .WithParameter("?idUsuario", idUsuario)
                    .WithParameter("?codigo", codigo)
                    .Results(u => new { Id = u.Id })
                    .SingleOrDefault() != null;
        }

        private static int GetRandom()
        {
            return new Random().Next(999999);
        }
    }
}